home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
ms_dos
/
tool
/
happy03
/
change.doc
< prev
next >
Wrap
Text File
|
1994-11-16
|
8KB
|
187 lines
==============================================================================
HAPPy(H.Asano Pascal Processing system)
バージョンアップ変更点一覧
Copyright (c) H.Asano 1993,1994.
==============================================================================
1.はじめに
HAPPyの、初リリース(1992年12月18日 Version 0.0)以降の、
バージョンアップによる変更点一覧を簡単に示すドキュメントです。
2.Version 0.0 → 0.1
(1) バグ修正
・ixa,chk 命令の アセンブルバグ修正
・lca 命令の アセンブルバグ修正
・実数指定に関するアセンブルバグ修正
具体的には、次のようなプログラムがVersion 0.0では正しく動きません。
program bug00(output) ;
var aa:array[0..1] of integer ;
bb:array[1..2] of integer ;
cc:packed array[1..2] of char ;
begin
aa[0] := 0 ; aa[1] := 1 ;
bb[1] := 2 ; bb[2] := 3 ;
cc := ' ' ; { 全角空白 }
writeln(aa[0],aa[1],bb[1],bb[2]) ; { 配列の処理が異常 }
writeln(ord(cc[1])) ; { 順序数がが負になる }
writeln(3.4E-38,3.4E38) ; { 大きな実数指定時の動作不良 }
end.
Version 0.0で上記プログラムを動かすと、次のような誤った結果になります。
0 1 2 0
-127
3.400000E-038 1.#INF00E+000
(2) 機能追加
・ファイル出力時の障害チェック追加
(3) 性能改善
・インタプリタのメモリ搭載量を8192から10000ワードに増量
・動作速度をごくわずか高速化
(4) ドキュメント変更
・各種誤字修正
・「Pascal入門」 全面差し替え
・「HAPPy Pascal文法書」 加筆
・「バージョンアップ変更点一覧」追加
2.Version 0.1 → 0.2
(1) バグ修正
・piコマンドで-iオプション指定時に出力される「interpreter」綴り修正
・wrs,wrb命令の解釈実行バグ修正(write手続きの文字列,論理値の桁数指定
動作不良 Version 0.0->0.1の際に混入したもの)
・文字列定数中に " を記述した時の動作不良修正
・文字列の比較に関する解釈実行バグ修正(ナオシタラ比較速度がオソクナッテシマッタ)
・数の表記に関する文法エラーチェック修正(PASCAL原書第4版に従う)
・符号演算子に関する文法エラーチェック修正
・実数定数を指定した時P-codeソースにゴミが出力される障害修正
・inputファイルを変数引数に指定した手続き内で、プログラム起動後初めて
input^にアクセスした時、reset(input)をし忘れていたのを修正
具体的には、次のようなプログラムがVersion 0.1では正しく動きません。
program bug01(input,output) ;
var s : packed array[1..5] of char ;
procedure p(var F:text) ;
begin
writeln(F^);{ ここでinput^をアクセスするのでコンソール入力状態 }
end ; { となる必要があるが、素通りしてしまう }
begin
p(input) ;
s := 'HAPPy' ;
writeln(s='HAPPy') ; { 正しく TRUE と出力される }
s[5] := chr(100000+ord('y')-100000) ; { s[5]には'y'が入る }
writeln(s,s='HAPPy'); { TRUEとなるはずが FALSEとなる }
writeln('HAPPy':1) ; { H 1文字だけ出力されるのが正しい }
writeln(true :1) ; { T 1文字だけ出力されるのが正しい }
writeln('s="HAPPy";') ; { 変なものを出力してしまう }
end.
(2) 機能追加
・配列の添字が定数の時、コンパイル時に添字型の範囲チェックをする。
(コンパイルエラーメッセージ E148 追加)
(3) 性能改善
・csp命令の廃止に伴うP-codeの全面変更
・case文のコード改良 (最小値が0の時無駄なコードを生成しない)
・new標準手続き,dispose標準関数のコード改良
・文字列出力のコード改良
・配列の添字が定数の時のコード改良
・負の符号から始まる整数定数に関するコード改良(ngi命令を生成しない)
(4) ドキュメント変更
・「HAPPy Pascal文法書」削除
・各文書加筆修正
(5) その他の変更
・サンプルプログラム(CALENDER.PAS)微修正
・バッチファイル例 (HAPPY.BAT) 微修正
2.Version 0.2 → 0.3
(1) バグ修正
・case文の構文解析をISO規格に準拠(旧標準Pascalのままだった)
・in演算子の左辺が0~31でない時の動作不良修正
・with文を重ねた時の動作不良
・array[a,b] of ~ という配列型においてa[3]:=a[4] というような代入文
で代入可能でないというコンパイルエラーが起きる場合があるのを修正
・page標準手続きで引数を省略した時のエラーメッセージ不良修正
・succ/pred標準関数の引数にreal型を指定時、エラーにならない不良修正
・テキストファイル以外のファイルの入出力動作不良修正(ほとんどの場合
まともに動いていなかった・・・・ハズカシイ)
具体的には、次のようなプログラムがVersion 0.2以前では正しく動きません。
(**** Version 0.2以前に存在するバグ(一部)の確認プログラム ****)
program bug02(output,f);
type rcd = record
r1 : integer;
r2 : record
r21 : integer
end
end ;
var r : array[1..2] of rcd ;
f : file of rcd ;
begin
writeln(-1 in [0..31]) ; { FALSE なのにTRUE と出力される}
with r[2],r2 do
begin r21 := 21 ;
r1 := 1
end ;
writeln(r[2].r2.r21) ; { 21 なのに 1 と出力される }
rewrite(f) ;
write(f,r[2]) ;
reset(f) ;
read(f,r[1]) ;
write(r[1].r2.r21) { r[2].r2.21 と同じ値にならない}
end.
(2) 機能追加
・pcコマンドが使用する環境変数"TMP"に指定するディレクトリの最後が"\"
であってもなくてもよくした。
・pcコマンドで、Pascalソースファイル名の拡張子を省略した時は".pas"を
補うようにした。
・pcコマンドが生成するP-codeオブジェクトファイル名を、Pascalソースフ
ァイル名の拡張子を".pco"とした。
・pcコマンドのアセンブルリストファイル出力時の障害チェック追加(エラ
ーメッセーA008追加)
・piコマンドで、P-codeオブジェクトファイルの指定ができるようにした。
・piコマンドで、使用ファイル名をパラメータに指定できるようにした。
・代入文において、左辺が部分範囲型、右辺が単一の定数の場合、コンパイ
ル時に代入可能性チェックをする。
・succ/pred 標準関数において、-dオプション指定時、関数値の存在チェッ
クを追加(エラーメッセージR038,R039追加)
(3) 性能改善
・for文のコード改良
・ent命令の改良
・集合の要素記述の a..b という形式で、a,b とも定数の時のコード改良
・代入演算子に '=' を使っていた場合のコンパイルエラーメッセージ改良
・式+定数 あるいは 式-定数 において、定数が32767以下の時のコード改良
・input,outputファイルへの入出力関連コードの改良
・文字型に対してのchk命令生成をやめる。
・アセンブルリスト出力の高速化
(4) ドキュメント変更
・スタートレックゲームの解説書(STARTREK.DOC)を追加
・各文書加筆修正
(5) その他の変更
・再配付条件の変更(PI.EXE単独再配付を認める)
・アセンブルリストの空白部をタブに変更
・アセンブルソースの最大ラベル数を1800から500に削減
・アセンブルエラーメッセージの簡潔化
・サンプルプログラムに、スタートレックゲーム(STARTREK.PAS)を追加
・サンプルプログラム(カレンダー)ファイル名変更 -> CALENDAR.PAS
・バッチファイル例 (HAPPY.BAT) 微修正
------ 以上(CHANGE.DOC 終わり) ------